Many types of input devices are presently available for performing operations in a computing system, such as buttons or keys, mice, trackballs, touch panels, joysticks, touch screens and the like. Touch screens, in particular, are becoming increasingly popular because of their ease and versatility of operation as well as their declining price. Touch screens can include a touch panel, which can be a clear panel with a touch-sensitive surface. The touch panel can be positioned in front of or integral with a display screen so that the touch-sensitive surface covers the viewable area of the display screen. Touch screens can allow a user to make selections and move a cursor by simply touching the display screen via a finger or stylus. In general, the touch screen can recognize the touch and position of the touch on the display screen, and the computing system can interpret the touch and thereafter perform an action based on the touch event.
Touch panels can include an array of touch sensors capable of detecting touch events (the touching of fingers or other objects upon a touch-sensitive surface). Future touch panels may be able to detect multiple touches (the touching of fingers or other objects upon a touch-sensitive surface at distinct locations at about the same time) and near touches (fingers or other objects within the near-field detection capabilities of their touch sensors), and identify and track their locations. Examples of multi-touch panels are described in Applicant's co-pending U.S. application Ser. No. 10/842,862 entitled “Multipoint Touchscreen,” filed on May 6, 2004 and published as U.S. Published Application No. 2006/0097991 on May 11, 2006, the contents of which are incorporated by reference herein.
Proximity sensor panels are another type of input device that can include an array of proximity sensors capable of detecting hover events (the no-touch, close proximity hovering of fingers or other objects above a surface but outside the near-field detection capabilities of touch sensors) as well as touch events. Proximity sensor panels may also be able to detect multiple instances of hovering referred to herein as multi-hover events (the hovering of fingers or other objects above a surface at distinct locations at about the same time). Examples of a proximity sensor, a proximity sensor panel, a multi-hover panel and a computing system using both an multi-touch panel and proximity sensors are described in Applicant's co-pending U.S. application Ser. No. 11/649,998 entitled “Proximity and Multi-Touch Sensor Detection and Demodulation,” filed on Jan. 3, 2007, the contents of which are incorporated by reference herein.
Proximity sensor panels can be employed either alone or in combination with multi-touch panels. In addition, it is noted that some touch sensors, particularly capacitive touch sensors, can detect some hovering or proximity. Proximity sensors, as referred to herein, are understood to be distinct from touch sensors, including touch sensors that have some ability to detect proximity. Multi-touch sensor panels capable of detecting multi-touch events and multi-hover sensor panels capable of detecting multi-hover events may collectively be referred to herein as multi-event sensor panels.
Both touch sensor panels and proximity sensor panels can be formed as an array of rows and columns of sensors. To scan a sensor panel, a stimulus can be applied to one row with all other rows held at DC voltage levels. When a row is stimulated, a modulated output signal can appear on the columns of the sensor panel. The columns can be connected to analog channels (also referred to herein as event detection and demodulation circuits). For every row that is stimulated, each analog channel connected to a column generates an output value representative of an amount of change in the modulated output signal due to a touch or hover event occurring at the sensor located at the intersection of the stimulated row and the connected column. After analog channel output values are obtained for every column in the sensor panel, a new row is stimulated (with all other rows once again held at DC voltage levels), and additional analog channel output values are obtained. When all rows have been stimulated and analog channel output values have been obtained, the sensor panel is said to have been “scanned,” and a complete “image” of touch or hover can be obtained over the entire sensor panel. This image of touch or hover can include an analog channel output value for every pixel (row and column) in the panel, each output value representative of the amount of touch or hover that was detected at that particular location.
Thus, for example, if a finger touched down directly in the center of a touch panel, the resultant image of touch would include analog channel output values for the pixels located near the center of the panel indicative of touch events occurring at those pixels. The pixels with these output values might be generally grouped together in a oval, fingerprint-shaped cluster. Furthermore, the pixels in the center of that oval can have output values indicative of a greater of degree of touch than those pixels at the outside edges of the oval. A similar image of hover can be captured for a finger hovering over the center of the panel.
As mentioned above, a display screen can be located beneath the sensor panel. A user interface (UI) algorithm can generate a virtual keypad or other virtual input interface beneath the sensor panel that can include virtual buttons, pull-down menus and the like. By detecting touch or hover events at locations defined by the virtual buttons, the UI algorithm can determine that a virtual button has been “pushed.” The magnitude of the analog channel output values, indicating the “degree” of touch or hover, can be used by the UI algorithm to determine whether there was a sufficient amount of touch or hover to trigger the pushing of the virtual button.
Ideally, a particular amount of touch or hover should generate an analog channel output value of the same magnitude regardless of where the touch or hover event occurred on a sensor panel. However, because the electrical characteristics of the sensors in a sensor panel are likely to vary due to processing variations, manufacturing tolerances and assembly differences (which can be due to the location of the sensors in relation to the edges and shape of the sensor panel), the magnitude of the analog channel output values can vary from location to location within the sensor panel. This can lead to inconsistent or false triggering of virtual buttons or non-triggering of virtual buttons, and a difficult user experience as the user discovers that certain areas of the sensor panel require more or less touching, or closer or farther hovering in order to trigger a virtual button.